package com.ruoyi.system.service;

import java.util.List;
import java.util.Map;
import com.ruoyi.system.domain.TalentTemplate;
import com.ruoyi.system.domain.TalentTemplateField;

/**
 * 人才库模板配置 服务层
 * 
 * @author ruoyi
 */
public interface ITalentTemplateService
{
    /**
     * 查询人才库模板配置列表
     * 
     * @param talentTemplate 人才库模板配置
     * @return 人才库模板配置集合
     */
    public List<TalentTemplate> selectTalentTemplateList(TalentTemplate talentTemplate);

    /**
     * 通过ID查询人才库模板配置
     * 
     * @param id 主键ID
     * @return 人才库模板配置对象
     */
    public TalentTemplate selectTalentTemplateById(Long id);

    /**
     * 通过岗位ID查询人才库模板配置
     * 
     * @param postId 岗位ID
     * @return 人才库模板配置对象
     */
    public TalentTemplate selectTalentTemplateByPostId(Long postId);

    /**
     * 新增人才库模板配置（同时创建动态表和菜单）
     * 
     * @param talentTemplate 人才库模板配置
     * @return 结果
     */
    public int insertTalentTemplate(TalentTemplate talentTemplate);

    /**
     * 修改人才库模板配置
     * 
     * @param talentTemplate 人才库模板配置
     * @return 结果
     */
    public int updateTalentTemplate(TalentTemplate talentTemplate);

    /**
     * 删除人才库模板配置（同时删除动态表和菜单）
     * 
     * @param id 主键ID
     * @return 结果
     */
    public int deleteTalentTemplateById(Long id);

    /**
     * 批量删除人才库模板配置
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteTalentTemplateByIds(Long[] ids);

    /**
     * 保存模板字段（从SpreadJS传入的字段列表）
     * 
     * @param templateId 模板ID
     * @param fields 字段列表
     * @return 结果
     */
    public int saveTemplateFields(Long templateId, List<TalentTemplateField> fields);

    /**
     * 批量保存字段列表（中文转拼音）
     * 
     * @param templateId 模板ID
     * @param fields 字段列表（fieldLabel为中文）
     * @return 结果
     */
    public int saveFieldListBatch(Long templateId, List<TalentTemplateField> fields);

    /**
     * 查询模板字段列表
     * 
     * @param templateId 模板ID
     * @return 字段列表
     */
    public List<TalentTemplateField> selectFieldsByTemplateId(Long templateId);

    /**
     * 删除模板字段
     * 
     * @param templateId 模板ID
     * @param fieldId 字段ID
     * @return 结果
     */
    public int deleteTemplateField(Long templateId, Long fieldId);

    /**
     * 查询动态表数据
     * 
     * @param tableName 表名
     * @return 数据列表
     */
    public List<Map<String, Object>> selectDynamicTableData(String tableName);

    /**
     * 保存动态表数据（批量保存SpreadJS数据）
     * 
     * @param tableName 表名
     * @param dataList 数据列表
     * @return 结果
     */
    public int saveDynamicTableData(String tableName, List<Map<String, Object>> dataList);
}

